In a finally
block, we need to be able to clean things up from whatever it
was that we just did in the corresponding try
block. That might involve calling
one or more suspend
functions. However, if our job was canceled, our cooperative
code that we call from finally
might elect to not do anything, since the job
was canceled. Sometimes, we really do need those suspend
calls to do their work,
despite the job having been canceled.
To handle this, wrap the suspend
calls in a withContext(NonCancellable)
block. This will alter our CoroutineContext
to ignore any prior cancellation
of the job.
You can learn more about this in:
Tags: